﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Linq;

namespace ProyectoEscuela
{
    public partial class frmModificacionDatosAgente : ProyectoEscuela.frmBaseForm
    {
        dbProyectoEscuelaDataContext db = new dbProyectoEscuelaDataContext();
        Persona agente;

        public frmModificacionDatosAgente()
        {
            InitializeComponent();
            limpiarCampos();
            deshabilitarControles();
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            try
            {
                agente = db.Personas.Single(p => p.TipoDoc == cmbTipoDoc.Text.ToString() && p.Numdoc == txtDoc.Text.ToString());

            }
            catch (Exception ex)
            {
                frmBuscarPersona frm = new frmBuscarPersona("agente");

                frm.ShowDialog();

                try
                {
                    agente = frm.getAgente();
                }
                catch
                {

                }



            }
            if (this.agente != null)
            {
                //cargamos los combos
                cmbTipoDoc.Text = agente.TipoDoc;
                txtDoc.Text = agente.Numdoc;

                txtApellido.Text = agente.Apellido;
                txtNombre.Text = agente.Nombre;
                cmbSexo.Text = agente.Sexo;
                cmbEstadoCivil.Text = agente.EstadoCivil;
                cmbFechaNac.Value = (System.DateTime)agente.FeNac;
                txtNacionalidad.Text = agente.Nacionalidad;
                txtDGI.Text = agente.NroDGI;
                txtDGR.Text = agente.NroDGR;
                txtDomicilio.Text = agente.Domicilio;
                txtBarrio.Text = agente.Barrio;

                cmbProvincia.SelectedValue = agente.Localidad.idProvincia;
                cmbLocalidad.SelectedValue = agente.idLocalidad;
                txtTelefono.Text = agente.Telefono;

                if (agente.AsignacFliares == true)
                    rdAsignacionesFliaresSI.Checked = true;
                else
                    rdAsignacionesFliaresNO.Checked = true;

                habilitarControles();
            }
        }

        private void habilitarControles()
        {
            tabControl1.Enabled = true;
            btnGuardar.Enabled = true;
            btnImprimirF2.Enabled = true;
        }

        private void deshabilitarControles()
    {   
        tabControl1.Enabled = false;
        btnGuardar.Enabled = false;
            btnImprimirF2.Enabled = false;
    }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            // VALIDACIONES 
            String msjError = "Favor de ingresar y/o seleccionar un valor";
            bool errores = false;
            Control[] controlesAValidar = {
                 cmbTipoDoc,
                 txtDoc,
                 txtApellido,
                 txtNombre,
                 cmbSexo,
                 cmbEstadoCivil,
                 txtNacionalidad,
                 txtDomicilio,
                 cmbProvincia,
                 cmbLocalidad,
                                          };

            foreach (Control val in controlesAValidar)
            {
                if (errores == false) errores = ValVacio(val, msjError);
            }



            if (errores)
                MessageBox.Show("Favor de Verificar los datos ingresados.", "Información", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            else
            {
                // ACCION EN CASO DE K VAYA BIEN...
                guardarAgente();
                limpiarCampos();
                deshabilitarControles();
            }
        }

       


        private bool ValVacio(Control miControl, String mensajeError)
        {
            // devuelve true si es vacio
            bool bStatus = false;
            if (miControl.Text == "")
            {
                errorProvider1.SetError(miControl, mensajeError);
                bStatus = true;
            }
            else
                errorProvider1.SetError(miControl, "");
            return bStatus;
        }
        private void guardarAgente()
        {


            try
            {
                Persona agente = new Persona();

                agente = db.Personas.Single(p => p.TipoDoc == cmbTipoDoc.Text.ToString() && p.Numdoc == txtDoc.Text.ToString());

                agente.TipoDoc = cmbTipoDoc.Text.ToString();
                agente.Numdoc = txtDoc.Text.ToString();

                agente.Apellido = txtApellido.Text;
                agente.Nombre = txtNombre.Text;
                agente.Sexo = cmbSexo.Text;
                agente.EstadoCivil = cmbEstadoCivil.Text;
                agente.FeNac = DateTime.Parse(cmbFechaNac.Text);
                agente.Nacionalidad = txtNacionalidad.Text;
                agente.NroDGI = txtDGI.Text;
                agente.NroDGR = txtDGR.Text;
                agente.Domicilio = txtDomicilio.Text;
                agente.Barrio = txtBarrio.Text;

                Localidad localidadSeleccionada = (Localidad)cmbLocalidad.SelectedItem;
                Localidad nuevaLocalidad = db.Localidads.Single(l => l.idLocalidad == localidadSeleccionada.idLocalidad);
                agente.Localidad = nuevaLocalidad;
                // lo de abajo no anda
                //agente.idLocalidad = localidadSeleccionada.idLocalidad;


                agente.Telefono = txtTelefono.Text;
                if (rdAsignacionesFliaresSI.Checked == true)
                    agente.AsignacFliares = true;
                else
                    agente.AsignacFliares = false;

                agente.fechaUltimaModif = System.DateTime.Today;


                db.SubmitChanges();

                MessageBox.Show("Modificaciones guardadas exitosamente.", "Información", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            catch
            {
                MessageBox.Show("No existe el Agente. Pruebe utilizando el botón de ALTA.", "Información", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }


        }
        private void limpiarCampos()
        {
            
            
            txtApellido.Text = "";
            txtNombre.Text = "";
            cmbSexo.Text = "";
            cmbEstadoCivil.Text = "";
            txtNacionalidad.Text = "";
            txtDGI.Text = "";
            txtDGR.Text = "";
            txtDomicilio.Text = "";
            txtBarrio.Text = "";
            txtTelefono.Text = "";

            // cargamos provincia
            var provincias = from p in db.Provincias
                             select p;

            // ejemplo VB.NET
            //      Dim datos = From p In contexto.Clubs Select p.Codigo, p.Nombre
            //Me.cboClubs.DataSource = datos
            //' Indicamos el valor a mostrar
            //Me.cboClubs.DisplayMember = "Nombre"
            //' Indicamos el co clave asociado al valor mostrado
            //Me.cboClubs.ValueMember = "Codigo"



            cmbProvincia.DataSource = provincias;
            cmbProvincia.DisplayMember = "Nombre";
            cmbProvincia.ValueMember = "idProvincia";

        }

        private void btnImprimirF2_Click(object sender, EventArgs e)
        {
            dsABMAgenteSH.AgenteDataTable dt;
            dsABMAgenteSH.AgenteRow dr;

            dt = new dsABMAgenteSH.AgenteDataTable();
            dr = dt.NewAgenteRow();

            dr.apellido = txtApellido.Text;
            dr.barrio = txtBarrio.Text;
            dr.codpostal = txtCodPostal.Text;
            dr.domicilio = txtDomicilio.Text;
            dr.estadocivil = cmbEstadoCivil.Text;
            dr.fechanacanio = cmbFechaNac.Text.Substring(6, 4);
            dr.fechanacdia = cmbFechaNac.Text.Substring(0, 2);
            dr.fechanacmes = cmbFechaNac.Text.Substring(3, 2);
            dr.localidad = cmbLocalidad.Text;
            dr.nacionalidad = txtNacionalidad.Text;
            dr.nombre = txtNombre.Text;
            dr.nroDGI = txtDGI.Text;
            dr.nroDGR = txtDGR.Text;
            dr.numdoc = txtDoc.Text;
            dr.provincia = cmbProvincia.Text;
            dr.sexo = cmbSexo.Text;
            dr.telefono = txtTelefono.Text;
            dr.tipodoc = cmbTipoDoc.Text;
            if (rdAsignacionesFliaresSI.Checked == true)
                dr.asigFliaresSI = "X";
            if (rdAsignacionesFliaresNO.Checked == true)
                dr.asigFliaresNO = "X";


            dt.Rows.Add(dr);

            rptModificacionDatosAgente rpt;
            rpt = new rptModificacionDatosAgente();
            rpt.SetDataSource((DataTable)dt);

            frmReportForm frm;
            frm = new frmReportForm(rpt);
            frm.ShowDialog();
        }

        private void cmbProvincia_SelectedIndexChanged(object sender, EventArgs e)
        {
            Provincia listaProvincias = (Provincia)cmbProvincia.SelectedItem;

            if (listaProvincias != null)
                localidadBindingSource.DataSource = listaProvincias.Localidads;
        }

        private void cmbLocalidad_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cmbLocalidad.SelectedValue != null)
            {
                Localidad localidad = (Localidad)cmbLocalidad.SelectedItem;
                txtCodPostal.Text = localidad.codigoPostal.ToString();
            }
        }


     
    }
}
